perm filename EROM.FAI[CMS,LCS]2 blob sn#187352 filedate 1975-11-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002			PROM PROG
C00004 00003	 RESET I/O		INDEXED ?
C00006 00004	 KB SCAN
C00008 00005	 CONTINUE	NOTSTN←370   (NOTSTN←-STKNUM)  INDEXED ?
C00009 00006	 LED OUT
C00019 ENDMK
C⊗;
;		PROM PROG

; ODT RAM	DPYK,ADH,ADL,DAT
;		IRQA,IRQB,IRQC,NMIA,NMIB,NMIC
;		A,X,Y,SP,CRA,PRA,CRB,PRB ??

; ROM INTER VECTS
LOC 177774
	NMIVL:	NMIAL		;			1
		NMIAH		;			1
	RSTVL:	RSTAL		;			1
		RSTAH		;			1
	IRQVL:	IRQAL		;			1
		IRQAH		;		       _1_
				;			6
LOC 177400
		BRK		;			1

; ROM RESTET		FIX IRQV AND CRA FOR KB INTER ?
	NMIJ:	JMPAB
		ODTAL
		ODTAH

	RRST:	LDXIM	3	;			2
	FIXV:	LDABX	NMIJ	;			3
		STABX	NMIALH-1;			3
		DEX		;			1
		BNE	FIXV	;		      __2_
				;		       11

; OCT DDT	STKNUM←10

	ODT:	STAAB	SVA	;SAVE A REG		3
		STXAB	SVX	;SAVE X REG		3
		LDXIM	STKNUM	;GET SAVE COUNT		2

	SAVS:	PLA		;GET FROM STACK		1
		STABX	SVSTK-1	;AND SAVE IT		3
		DEX		;			1
		BNE	SAVS	;DO MORE		2
		
		TYA		;SAVE Y			1
		PHA		;		      __1_
				;		       17
				;		      ____
				;		       35
; RESET I/O		INDEXED ?
;		PIAH←367	ZERO←0	NEG1←377
;		CRA←375		PRA←374
;		CRB←377		PRB←476

	KBINI:	
		LDXIM	374	;SETUP COUNT		2
		LDYIM	ZERO	;			2
	MORIO:	LDABX	PIAH 0	;SAVE PRA		3
		PHA		;			1
		LDABX	PIAH 1	;SAVE CRA		3
		PHA		;			1
		TYA		;			1
		STABX	PIAH 0	;SET DDBIT		3
		STABX	PIAH 0	;SETUP DIREC.		3
		INX		;ADD TWO TO INDEX	1
		INX		;			1
		BNE	MORIO	;DO OTHER ONE		2
		
		LDAIM	6	;SET DDBIT		2
		STAAB	CRA	;SET ↑BIT	      __3_


	KBINI:	LDAAB	CRA	;SAVE CRA		3
		PHA		;			1
		LDXIM	ZERO	;			2
		STXAB	CRA	;SET DDRA		3

		LDAAB	PRA	;SAVE PRA		3
		PHA		;			1
		STXAB	PRA	;SET INDD		3
		
		LDAIM	6	;SET DDBIT		2
		STAAB	CRA	;SET ↑BIT	      __3_
				;		       21

	LEDINI:	LDAAB	CRB	;SAVE CRB		3
		PHA		;			1
		LDAAB	PRB	;SAVE PRB		3
		PHA		;			1
		STXAB	CRB	;SET DDRB WITH ZERO	3

		LDAIM	NEG1	;			2
		STAAB	PRB	;			3
		LDAIM	54	;SET DDBIT		2
		STAAB	CRB	;SET PULSE	      __3_
				;		       21
				;		      ____
				;		       42
; KB SCAN
	KSCAN:	JSR	IKBW	;GET KBCHR		3
		CMPIM	7	;			2
		BCS	GADR	;BRANCH ON NON NUM     _2_
				;			7

		CMPIM	10	;			2
		BNE	KCNUM	;			2

	UDKEY:	LDAAB	UDKL	;			3
		LDYAB	IDKH	;			3
		BNE	STJMP	;		      __2_
				;		       12

	KCNUM:	JSR	IKBW	;			3
		ASHAC		;			1
		TAX		;			1
		LDABX	CTBL	;			3
		LDYBX	CTBL+1	;			3
	STJMP:	STAAB	JWDS	;			3
		STYAB	JWDS+1	;			3
		JMPIN	JWDS	;		      __3_
						       20

	CTBL:	CONT		;			2
		CR		;			2
		LF		;			2
		/		;			2
		.		;			2
				;			2
				;			2
				;			2
				;			2
				;		      __2_
				;		       10

; GET ADDRESS	??
	GADR:	LDXIM	3	;			2
	DIG:	ASLAB	ADL	;SHIFT ADDRESS LEFT	3
		ROLAB	ADH	;			3
		DEX		;			1
		BNE	DIG	;			2
		ORAAB	ADL	;AND ADD KBCHR		3
		STAAB	ADL	;			3
		JMPAB	KSCAN	;		      __3_
				;		       20
; INKBW		A←INCHR
	IKBW:	BITAB	CRA	;TEST CRA FOR INPUT	3
		BPL	IKBW	;			2
		LDAAB	PRR	;GET CHR		3
		ANDIM	360	;GET RID OF JUNK	2
		RTS		;RETURN		       _1_
				;		       11
				;		      ____
				;		       89
; CONTINUE	NOTSTN←370   (NOTSTN←-STKNUM)  INDEXED ?
	CONT:	
		PLA		;			1
		STAAB	PRB	;			3
		PLA		;			1
		STAAB	CRB	;			3
		PLA		;			1
		STAAB	PRA	;			3
		PLA		;			1
		STAAB	CRA	;		      __3_
				;		       16
		
		PLA		;			1
		TAY		;			1

		LDXIM	NOTSTN	;			2

	GETS:	LDABX	SVSTK+STKNUM-NEG1	;	3
		PHA		;			1
		INX		;			1
		BMI	GETS	;			2
		LDXAB	SVX	;			3
		LDAAB	SVA	;			3
		RTI		;		      __1_
				;		       18
				;		      ____
				;		       34
; LED OUT
	LDPY:	PHP		;PUSH CARRY		1
		LDAIM	140	;SETUP COUNT		2

	SVCNT:	ANDIM	360	;			2
		STAAB	DPYK	;SAVE COUNT		3
		LDXIM	4	;SETUP BIT COUNT	2
		LDAAB	VAL	;AND GET VAL	        3
		PLP		;GET CARRY	      __1_
				;		       14

	FBITS:	ROLAC		;ROTATE 4 BITS LEFT	1
		ROLAB	ADL	;			3
		ROLAB	ADH	;			3

		DEX		;DEC X			1
		BNE	FBITS	;AND DO REST	      __2_
				;		       10

		STAAB	VAL	;SAVE IT		3
		ANDIM	17	;GET FIRST HALF BYTE	2
		ORAAB	DPYK	;GET COUNT		3
		STAAB	PRB	;DPY IT			3

		PHP		;SAVE CARRY		1
		SEC		;			1
		SBCIM	20	;DEC COUNT		2
		BCC	SVCNT	;MORE?			2

		PLP		;POP PS			1
		RTS		;RETURN		      __1_
				;		       19
				;		      ____
				;		       43

				;		       35
				;		       42
				;		       89
				;		     __34_
				;		      243
END